import java.util.*;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 言初
 * Date: 2023-02-07
 * Time: 9:29
 */
public class MyQueue {
    //使用数组实现，也就是顺序表
    //空的就是front==rear
    //满了就是(rear+1)%len==front
    int front;//头
    int rear;//尾
    int len;//长度
    List<Integer> list=new ArrayList<>();//数组
    public MyQueue(int k) {
        // 构造器，设置队列长度为 k 。
        len=k;
    }

    public boolean enQueue(int value) {
        //向循环队列插入一个元素。如果成功插入则返回真。
        if((rear+1)%len!=front){
            //没满
            list.add(value);

            rear=(rear+1)%len;
            return true;
        }
        return false;
    }

    public boolean deQueue() {
        //从循环队列中删除一个元素。如果成功删除则返回真。
        if(rear!=front){
            //不为空
            list.remove((rear+len-1)%len);

            rear=(rear+len-1)%len;
            return true;
        }
        return false;
    }

    public int Front() {
        //从队首获取元素。如果队列为空，返回 -1 。
        if(rear!=front){
            //不为空
            return list.get(front);
        }
        return -1;
    }

    public int Rear() {
        // 获取队尾元素。如果队列为空，返回 -1 。
        if(!isEmpty()){
            //不为空
            return list.get((rear+len-1)%len);
        }
        return -1;
    }

    public boolean isEmpty() {
        //检查循环队列是否为空。
        if(rear==front){
            return true;
        }
        return false;
    }

    public boolean isFull() {
        //检查循环队列是否已满。
        if((rear+1)%len==front){
            return true;
        }
        return false;
    }
}
